Information technology is now routinely used by many enterprises to receive, process, and provide information via widely accessible electronic communications networks, such as the Internet. Yet most information technology systems will begin to deny service, or fail to process message traffic efficiently, when communications traffic exceeds a processing capacity of the system. Such failures in communication can significantly impair the operations of an enterprise in many ways. Slower website performance is also known to cause users/visitors to leave the website sooner. Another consequence of poor performance is that the website may be downgraded in search engine results rankings.
In recent years, enterprises and developers have sought an easy and affordable way to use cloud computing as a way to load and performance test their web-based applications. Cloud computing gets its name from the fact that the machine, storage, and application resources exist on a “cloud” of servers. In cloud computing shared resources, software and information are provided on-demand, like a public utility, via the Internet. Cloud computing is closely related to grid computing, which refers to the concept of interconnecting networked computers such that processing power, memory and data storage are all community resources that authorized users can utilize for specific tasks.
By way of example, a company that provides online tax preparation services to customers who wish to file their tax returns electronically may want to test the reliability of their website to uncover potential reliability and performance problems well before April 14th and 15th when traffic volumes spike as customers rush to meet the filing deadline. Replicating anticipated user load for a business website traditionally requires hours and hours of error prone manual allocation and deployment of machine instances comprising the grid utilized for the test. In addition, the user often is required to deal with different tools that each cloud provider provides to allocate the servers and then deploy the user's proprietary software thereon. Once allocated, the user also needs to recover from the percentage of servers which are non-operational upon delivery, as well as those that do not respond even after the software product has been deployed on them. All of this tedious, time-consuming, and error-prone work has to be completed before each test can be run.